package com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api;

import com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.exception.ODataGenericModelException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmItem;

import javax.persistence.AttributeConverter;


public interface GenericAttribute extends GenericElement {

  public <X, Y extends Object> AttributeConverter<X, Y> getConverter();

  public EdmPrimitiveTypeKind getEdmType() throws ODataGenericModelException;

  public CsdlAbstractEdmItem getProperty() throws ODataGenericModelException;

  public GenericStructuredType getStructuredType() throws ODataGenericModelException;

  public Class<?> getType();

  public boolean isAssociation();

  public boolean isCollection();

  public boolean isComplex();

  public boolean isEnum();

  public boolean isKey();

  public boolean isSearchable();

}
